package com.peng.leetcode.dynamic;

import java.util.Arrays;

/**
 * FindMaxForm
 *
 * @author: lupeng6
 * @create: 2020/12/30 14:34
 */
public class FindMaxForm {

    public static void main(String[] args) {
        int[] arr = {1, 6, 3, 4, 5, 2, 7};

        for (int i = 0; i < arr.length - 1; i++) {
            int val = arr[i];
        }
    }


//    public static void main(String[] args) {
//        String[] strs = {"011", "1", "11", "0", "010", "1", "10", "1", "1", "0", "0", "0", "01111", "011", "11", "00", "11", "10", "1", "0", "0", "0", "0", "101", "001110", "1", "0", "1", "0", "0", "10", "00100", "0", "10", "1", "1", "1", "011", "11", "11", "10", "10", "0000", "01", "1", "10", "0"};
//        int m = 44;
//        int n = 39;
//
////        String[] strs = {"10", "0001", "111001", "1", "0"};
////        int m = 5;
////        int n = 3;
//        System.out.println(new FindMaxForm().findMaxForm(strs, m, n));
//    }

    private String[] strs;
    private int m;
    private int n;

    private int[][][] marked;

    public int findMaxForm(String[] strs, int m, int n) {
        this.strs = strs;
        this.m = m;
        this.n = n;
        this.marked = new int[strs.length][m + 1][n + 1];
        for (int i = 0; i < marked.length; i++) {
            for (int j = 0; j < marked[i].length; j++) {
                Arrays.fill(marked[i][j], -1);
            }
        }
//        return dp(strs.length - 1, m, n);
        return 1;
    }

//    public int dp(int index, int currentZero, int currentOne, int capacity) {
//        if (index == strs.length) {
//            return capacity;
//        }
//        if (marked[index][currentZero][currentOne]) {
//            return capacity;
//        }
//        marked[index][currentZero][currentOne] = true;
//
//        // 计算 0 1
//        int zeroSize = 0;
//        int oneSize = 0;
//        String str = strs[index];
//        for (int i = 0; i < str.length(); i++) {
//            if (str.charAt(i) == '0') {
//                zeroSize++;
//            } else {
//                oneSize++;
//            }
//        }
//
//        // 放入
//        int in = Integer.MIN_VALUE;
//        if (zeroSize + currentZero <= m && oneSize + currentOne <= n) {
//            in = dp(index + 1, zeroSize + currentZero, oneSize + currentOne, capacity + 1);
//        }
//
//        int noIn = dp(index + 1, currentZero, currentOne, capacity);
//
//        return Math.max(noIn, in);
//    }


//    public int dp(int index, int m, int n) {
//        if (index < 0) {
//            return 0;
//        }
//        if (marked[index][m][n] == -1) {
//            return marked[index][m][n];
//        }
//
//
//    }
//
//    public int[] count(String str) {
//        int zero = 0;
//        int one = 0;
//
//    }
}
